#include <stdio.h>
#define MAXSIZE 5
//课时13作业
/*新建一个栈，读取标准输入3个整数3 4 5，入栈3 4 5，依次出栈，打印 5 4 3，
新建循环队列（Maxsize为5），读取标准输入3 4 5 6 7，入队7时，队满，打印false，然后依次出队，输出 3 4 5 6*/
typedef int ElemType;
typedef struct
{
    ElemType data[MAXSIZE];   //实际存储数据的空间只有MAXSIZE-1个，需要一个空间来判断空和满
    int front,rear;           //分别表示队头和队尾
}SqQueue;

//初始化循环队列
void SqQueue_init(SqQueue &sq)
{
    sq.front=sq.rear=0;   //初始化时都指向数组下标0位置
}

//判断队列空
bool SqQueue_empty(SqQueue &sq)
{
    return sq.front==sq.rear;
}

//入队
bool SqQueue_push(SqQueue &sq,ElemType x)
{
    //判断队列是否已满
    if( (sq.rear+1)%MAXSIZE == sq.front )
    {
        return false;
    }
    //从队尾入队
    sq.data[sq.rear]=x;
    //队尾指针需要往前移动
    sq.rear=(sq.rear+1)%MAXSIZE;
    return true;
}

//出队
bool SqQueue_pop(SqQueue &sq,ElemType &x)
{
    //判断队列是否为空
    if(SqQueue_empty(sq))
    {
        return false;
    }
    //从队头出
    x=sq.data[sq.front];
    //队头指针需往前移动
    sq.front=(sq.front+1)%MAXSIZE;
    return true;
}

//用数组来实现栈
typedef struct
{
    ElemType data[MAXSIZE];
    int top;
}Stack;

//初始化栈
void stack_init(Stack &st)
{
    st.top=-1;
}

//判断栈是否为空
bool stack_empty(Stack &st)
{
    if(-1==st.top)
    {
        return true;
    }
    return false;
}

//入栈
bool stack_push(Stack &st,ElemType x)
{
    //判断栈是否已满
    if(MAXSIZE-1 == st.top)
    {
        return false;
    }
    //存入数据
    st.data[++st.top]=x;
    return true;
}

//出栈
bool stack_pop(Stack &st,ElemType &m)
{
    //判断是否为空
    if(stack_empty(st))
    {
        return false;
    }
    m=st.data[st.top];
    --st.top;
    return true;
}


int main()
{
    Stack st;
    stack_init(st);
    int num1,num2;

    for(int i=0; i<3; i++)
    {
        scanf("%d",&num1);
        stack_push(st,num1);
    }

    SqQueue sq;
    SqQueue_init(sq);
    int m,x;
    bool flag;


    for(int i=0; i<4; i++)
    {
        scanf("%d",&num2);
        SqQueue_push(sq,num2);
    }

    while(!stack_empty(st))
    {
        stack_pop(st,m);
        printf(" %d",m);
    }

    if(!flag)
    {
        printf("\nfalse\n");
    }

    while(!SqQueue_empty(sq))
    {
        SqQueue_pop(sq,x);
        printf(" %d",x);
    }

    return 0;
}
